<?php

use yii\db\Migration;

/**
 * Handles the creation of table `{{%region}}`.
 */
class m240524_101916_create_region_table extends Migration
{
    /**
     * {@inheritdoc}
     */
    public function safeUp()
    {
        $this->createTable('{{%region}}', [
            'id' => $this->primaryKey(),
            'regionType' => $this->integer()->notNull(),
            'accountId' => $this->integer()->notNull(),
            'parentRegion' => $this->integer()->null(),
            'name' => $this->string()->notNull(),
            'latitude1' => $this->double()->notNull(),
            'latitude2' => $this->double()->notNull(),
            'longitude1' => $this->double()->notNull(),
            'longitude2' => $this->double()->notNull(),
        ]);

        // Создание индекса для колонки accountId
        $this->createIndex(
            '{{%idx-region-accountId}}',
            '{{%region}}',
            'accountId'
        );

        // Добавление внешнего ключа к таблице {{%user}}
        $this->addForeignKey(
            '{{%fk-region-accountId}}',
            '{{%region}}',
            'accountId',
            '{{%user}}',
            'id',
            'CASCADE'
        );

         $this->createIndex(
            '{{%idx-region-regionType}}',
            '{{%region}}',
            'regionType'
        );

        $this->addForeignKey(
            '{{%fk-region-regionType}}',
            '{{%region}}',
            'regionType',
            '{{%region}}',
            'id',
            'CASCADE'
        );
    }

    /**
     * {@inheritdoc}
     */
    public function safeDown()
    {
         // Удаление внешнего ключа к таблице {{%user}}
         $this->dropForeignKey(
            '{{%fk-region-accountId}}',
            '{{%region}}'
        );

        // Удаление индекса для колонки accountId
        $this->dropIndex(
            '{{%idx-region-accountId}}',
            '{{%region}}'
        );


         $this->dropForeignKey(
            '{{%fk-region-regionType}}',
            '{{%region}}'
        );

        $this->dropIndex(
            '{{%idx-region-regionType}}',
            '{{%region}}'
        );

        // Удаление таблицы Region
        $this->dropTable('{{%region}}');
    }
}
